package com.thb.pay.manage.web.sys;

import com.google.common.collect.Lists;
import com.thb.pay.api.sys.vo.req.SysResourcePageReq;
import com.thb.pay.api.sys.vo.req.SysResourceReq;
import com.thb.pay.api.sys.vo.resp.SysResourceVo;
import com.thb.pay.core.annotation.OperationLog;
import com.thb.pay.core.utils.Constant;
import com.thb.pay.core.utils.MenuBuilder;
import com.thb.pay.core.utils.PageResult;
import com.thb.pay.core.utils.R;
import com.thb.pay.manage.comm.controller.BaseController;
import com.xiaoleilu.hutool.collection.CollUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("api/sys/resource")
public class SysResourceController extends BaseController {
    /**
     * @param pageReq
     * @return
     * @方法名称
     * @功能描述 查询列表
     * @作者: lucky
     * @创建时间: 16:31 2019/10/11
     * @版本 v1.01
     **/
    @PostMapping("/list")
    public R list(@RequestBody SysResourcePageReq pageReq) {

        PageResult<SysResourceVo> pageResult = feginCommService.sysResourceServiceApi.findPage(pageReq);
        return R.okData(pageResult);
    }

    /**
     * 删除
     *
     * @return
     */
    @RequestMapping("/delete")
    @OperationLog(value = "删除系统菜单")
    public R delete(@RequestParam("resourceIds") String resourceIds) {
        List<Long> resIds = parseStrIdsToList(resourceIds);
        feginCommService.sysResourceServiceApi.deleteBatchResourceIds(resIds);
        return R.ok();
    }

    @RequestMapping("/allList")
    public R allList() {
        List<SysResourceVo> resultDataList = feginCommService.sysResourceServiceApi.findListBySystemType(Constant.SYSTEM_MANAGE);
        List<MenuBuilder.Node> nodeList = Lists.newLinkedList();
        if (CollUtil.isNotEmpty(resultDataList)) {
            resultDataList.forEach(sysResourceVo -> {
                MenuBuilder.Node node = new MenuBuilder.Node();
                node.setResourceId(sysResourceVo.getId());
                node.setName(sysResourceVo.getName());
                node.setTitle(sysResourceVo.getTitle());
                if (StringUtils.isNotBlank(sysResourceVo.getJump())) node.setJump(sysResourceVo.getJump());
                if (StringUtils.isNotBlank(sysResourceVo.getIcon())) node.setIcon(sysResourceVo.getIcon());
                node.setParentId(sysResourceVo.getParentId());
                nodeList.add(node);
            });
        }
        return R.okData(nodeList);
    }
    /**
     * @param id 资源id
     * @return
     * @方法名称
     * @功能描述 查询
     * @作者: lucky
     * @创建时间: 16:31 2019/10/11
     * @版本 v1.01
     **/
    @RequestMapping("/get")
    public R get(@RequestParam("id") Long id) {
        SysResourceVo resultData = feginCommService.sysResourceServiceApi.getById(id);
        return R.okData(resultData);
    }

    /**
     * @param sysResourceReq
     * @return
     * @方法名称
     * @功能描述 新增
     * @作者: lucky
     * @创建时间: 16:31 2019/10/11
     * @版本 v1.01
     **/
    @PostMapping("/add")
    @OperationLog(value = "新增系统菜单")
    public R add(@RequestBody SysResourceReq sysResourceReq) {
        feginCommService.sysResourceServiceApi.save(sysResourceReq);
        return R.ok();
    }

    /**
     * @param sysResourceReq
     * @return
     * @方法名称
     * @功能描述 修改
     * @作者: lucky
     * @创建时间: 16:31 2019/10/11
     * @版本 v1.01
     **/
    @PostMapping("/update")
    @OperationLog(value = "修改系统菜单")
    public R update(@RequestBody SysResourceReq sysResourceReq) {
        feginCommService.sysResourceServiceApi.update(sysResourceReq);
        return R.ok();
    }


}